package com.lesliefang;

import com.huawei.deveco.common.security.encrypt.CryptoKit;
import com.huawei.deveco.common.security.encrypt.CryptoKitFactory;
import com.huawei.deveco.common.security.encrypt.KeyManager;

public class SignUtil {
    private static final KeyManager KEY_MANAGER = new KeyManager();

    private static final CryptoKit CRYPTO_KIT = CryptoKitFactory.getInstance("AES-GCM-128");

    /**
     * 签名密码解密
     *
     * @param dirContainsMaterial 包含 material 文件夹的文件夹 （即 material 的父文件夹 ）
     *                            material 是和 store file xxx.p12 同级目录， IDE会自动生成
     * @param encryptedPwd        加密的密码
     * @return 解密后的明文密码
     */
    public static String getDecryptPassword(String dirContainsMaterial, String encryptedPwd) throws Exception {
        byte[] encrpyKey = KEY_MANAGER.readOrCreateKey(dirContainsMaterial);
        return CRYPTO_KIT.decryptHex2Str(encrpyKey, encryptedPwd);
    }

    /**
     * 签名密码加密
     *
     * @param dirContainsMaterial 包含 material 文件夹的文件夹 （即 material 的父文件夹 ）
     *                            material 是和 store file xxx.p12 同级目录， IDE会自动生成
     * @param password            明文密码
     * @return 加密后的密码
     */
    public static String getEncryptPassword(String dirContainsMaterial, String password) throws Exception {
        byte[] encrpyKey = KEY_MANAGER.readOrCreateKey(dirContainsMaterial);
        return CRYPTO_KIT.encrypt2Hex(encrpyKey, password);
    }
}
